package com.william.jdbcplus.core.interceptor;

import java.lang.reflect.Method;

public interface Interceptor {
    /**
     * 方法执行前逻辑
     * 返回 true时执行方法本身
     * 返回 false 时执行around方法
     *
     * @param proxy
     * @param target
     * @param method
     * @param args
     * @return
     */
    boolean before(Object proxy, Object target, Method method, Object[] args);

    /**
     * 方法执行后逻辑
     *
     * @param proxy
     * @param target
     * @param method
     * @param args
     */
    void after(Object proxy, Object target, Method method, Object[] args);

    /**
     * 取代执行方法，当before返回false时执行
     *
     * @param proxy
     * @param target
     * @param method
     * @param args
     */
    void around(Object proxy, Object target, Method method, Object[] args);
}

